iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
0
自我挑戰組

ROS自學筆記系列 第 22

Day 22 - 建立自定義的.msg file

  • 分享至 

  • xImage
  •  

在上一篇我們知道了有哪些message格式可以使用,現在我們要來做一個自己的message啦!
首先要先去修改beginner_tutorials裡面的package.xml檔和CMakeList.txt檔設定,讓他可以幫我們建立自定義的msg檔案:

  • in package.xml:
    新增相依模組,一個是建立message用的,另一個是執行的時候用的,我想看英文名稱應該蠻清楚的才對 XD
  <build_depend>message_generation</build_depend>
  <exec_depend>message_runtime</exec_depend>
  • in CMakeList.txt:
    一樣要新增建立message用的相依模組,在find_package底下新增一個message_generation,所以看起來會長這樣:
find_package(catkin REQUIRED COMPONENTS
   roscpp
   rospy
   std_msgs
   message_generation
)

並且在catkin_package底下將CATKIN_DEPENDS的註解打開,在後面新增一個message_runtime,所以看起來會長這樣:

catkin_package(
  # INCLUDE_DIRS include
  # LIBRARIES beginner_tutorials
  CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
  # DEPENDS system_lib
  )

其他部分ROS的CMakeList已經幫我們寫好了,只是需要把註解拿掉而已,所以要把以下幾行的註解拿掉:

generate_messages(
   DEPENDENCIES
   std_msgs
)

上面就是基本設定啦! 接著我們就可以開始製作自己的message囉!
ROS幫忙建立的message檔案都需要放在/msg的資料夾裡面,所以我們要在beginner_tutorials內自己創一個/msg的資料夾,並把自己定義的.msg檔放在裡面:

$ roscd beginner_tutorials
$ mkdir msg
$ cd msg
$ vim my_msg.msg

我在這裡創了一個自己定義的msg檔,也就是my_msg,裡面我想模擬發文的時候,應該要有標題跟內文,還有文章的id,所以格式定義如下:

int64 id
string title
string content

設定好以後,接著回去編輯packageCMakeList.txt,將這個檔案加入編譯,建立的方法其實也寫好了,只要找到add_message_files的註解並拿掉就好了:

# add_message_files(
#   FILES
#   Message1.msg
#   Message2.msg
# )

其中的Message1.msgMessage2.msg只是範例說明,並沒有這兩個檔案,所以在解開註解的時候要把這兩行刪掉,不然在make的時候會找不到這兩個檔案而出錯喔!

 add_message_files(
   FILES
   my_msg.msg
 )

這樣就完成設定了! 接下來只要回去執行catkin_make,就可以成功建立這個新的message格式囉!

catkin_make執行畫面
在建立的時候可以看到,catkin_make幫我們建立了許多不同種格式的my_msg,負責供給不同語言使用,有js、c++、python等等不同的版本,明天我們就來使用這個新的message格式傳遞資訊吧!


上一篇
Day 21 - Msg & Srv file
下一篇
Day 23 - 使用自定義的message (python/c++)
系列文
ROS自學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言